home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Grafik
/
3.1.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
19KB
|
696 lines
' 3.1
'
@main
'
> PROCEDURE main
DIM daten(53,5,3),darstellung$(6)
OPEN "i",#1,"Dow_Jones"
FOR i|=1 TO 53
FOR j|=1 TO 5
FOR k|=1 TO 3
INPUT #1,daten(i|,j|,k|)
NEXT k|
NEXT j|
NEXT i|
CLOSE #1
'
RESTORE art
FOR i|=1 TO 6
READ darstellung$(i|)
NEXT i|
'
REPEAT
@auswahl_box(1,6,darstellung$(),art!())
i|=1
WHILE art!(i|)
INC i|
WEND
ERASE art!()
@daten(i|)
UNTIL i|=6
'
art:
DATA Matrix,Rollbalken,Histogramm,Kurve,Kuchen,Ende
RETURN
> PROCEDURE daten(art|)
SELECT art|
CASE 1 ! Matrix
'
DIM matrix(31,12)
RESTORE tage
woche|=1
wochentag|=4
FOR monat|=1 TO 12
READ tage|
FOR tag|=1 TO tage|
'
IF wochenend|=0
matrix(tag|,monat|)=daten(woche|,wochentag|,3)
INC wochentag|
IF wochentag|=6
wochenend|=2
wochentag|=1
INC woche|
ENDIF
ELSE IF wochenend|>0
DEC wochenend|
ENDIF
'
NEXT tag|
NEXT monat|
@matrix(31,12,4,2,10,"Dow Jones Schlußkurse 1987",matrix())
ERASE matrix()
tage:
DATA 31,28,31,30,31,30,31,31,30,31,30,31
'
CASE 2 ! Rollbalken
'
DIM roll$(53*5)
FOR i|=1 TO 53
FOR j|=1 TO 5
roll$(PRED(i|)*5+j|)=" "
RSET roll$(PRED(i|)*5+j|)=STR$(i|)
roll$(PRED(i|)*5+j|)=roll$(PRED(i|)*5+j|)+" "+STR$(j|)
FOR k|=1 TO 3
roll$(PRED(i|)*5+j|)=roll$(PRED(i|)*5+j|)+STR$(daten(i|,j|,k|),10,2)
NEXT k|
NEXT j|
NEXT i|
@roll(1,53*5,20,LEN(roll$(1))*8,"1987 High Low Close ",roll$)
ERASE roll$()
'
CASE 3 ! Histo
'
DIM histo(53)
FOR i|=1 TO 53
summe=0
FOR j|=1 TO 5
ADD summe,daten(i|,j|,3)
NEXT j|
histo(i|)=summe/5
NEXT i|
@histo(1,53,"Dow Jones, Wochenmittel 1987",histo())
ERASE histo()
'
CASE 4 ! Kurve
'
DIM kurve(53*5)
FOR i|=1 TO 53
FOR j|=1 TO 5
kurve(PRED(i|)*5+j|)=daten(i|,j|,3)
NEXT j|
NEXT i|
@kurve(1,53*5,"Dow Jones Industrial Index, 1987",kurve())
ERASE kurve()
'
CASE 5 ! Kuchen
'
DIM kuchen(4),kuchen$(5)
RESTORE kuchen
RANDOMIZE
FOR i|=1 TO 4
kuchen(i|)=SUCC(RAND(5))
READ kuchen$(i|)
NEXT i|
READ kuchen$(i|)
@kuchen(1,4,kuchen$(),kuchen())
ERASE kuchen$(),kuchen()
'
kuchen:
DATA Titel für Kuchen-Diagramm,Eins,Zwei,Drei,Vier
ENDSELECT
RETURN
'
PROCEDURE matrix(z&,s&,vk|,nk|,zeilen|,titel$,VAR matrix())
'
spalte|=SUCC(vk|+nk|)*8+6
n_spalten|=MIN(INT(580/spalte|),s&)
links|=24+4
rechts|=16
oben|=24
unten|=9
b_breite&=links|+n_spalten|*spalte|+rechts|
b_hÖhe&=oben|+zeilen|*9+unten|
x1&=310-b_breite&/2
y1&=118-b_hÖhe&/2
x2&=310+b_breite&/2
y2&=118+b_hÖhe&/2
'
GET x1&,y1&,x2&,y2&,hintergrund$
COLOR 0
PBOX x1&,y1&,x2&,y2&
COLOR 1
BOX x1&,y1&,x2&,y2&
'
' Titel
BOX x1&,y1&,x2&,y1&+12
TEXT x1&+b_breite&/2-LEN(titel$)*4,y1&+9,titel$
'
' LINKS
BOX x1&,y1&+oben|,x1&+links|,y2&-unten|
spalte$=" "
FOR i|=1 TO zeilen|
RSET spalte$=STR$(i|)
TEXT x1&+2,y1&+oben|-2+i|*9,spalte$
NEXT i|
'
' RECHTS
drittel&=((y2&-unten|)-(y1&+oben|))/3
ou1&=x2&-rechts|
ou2&=x2&
oben1&=y1&+oben|
oben2&=y1&+oben|+drittel&
BOX ou1&,oben1&,ou2&,oben2&
unten1&=y2&-unten|-drittel&
unten2&=y2&-unten|
BOX ou1&,unten1&,ou2&,unten2&
py1|=unten1&+drittel&/3
py2|=unten2&-drittel&/3
LINE ou1&+rechts|/2,py1|,ou1&+rechts|/2,py2|
LINE SUCC(ou1&),py2|-4,ou1&+rechts|/2,py2|
LINE ou1&+rechts|/2,py2|,PRED(ou2&),py2|-4
'
BOX ou1&,oben2&,ou2&,unten1&
py1|=oben1&+drittel&/3
py2|=oben2&-drittel&/3
LINE ou1&+rechts|/2,py1|,ou1&+rechts|/2,py2|
LINE SUCC(ou1&),py1|+4,ou1&+rechts|/2,py1|
LINE ou1&+rechts|/2,py1|,PRED(ou2&),py1|+4
'
' OBEN
BOX x1&+links|,y1&+12,x2&-rechts|,y1&+oben|
spalte$=" "
FOR i|=1 TO n_spalten|
RSET spalte$=STR$(i|)
TEXT x1&+links|-27+i|*spalte|,y1&+21,spalte$
LINE x1&+links|+i|*spalte|,y1&+12,x1&+links|+i|*spalte|,y1&+oben|
NEXT i|
'
' UNTEN
drittel&=((x2&-rechts|)-(x1&+links|))/3
links1&=x1&+links|
links2&=x1&+links|+drittel&
rl1&=y2&-unten|
rl2&=y2&
BOX links1&,rl1&,links2&,rl2&
px1&=links1&+drittel&/3
px2&=links2&-drittel&/3
LINE px1&,rl1&+unten|/2,px2&,rl1&+unten|/2
LINE px1&+6,rl1&+unten|/2-4,px1&,rl1&+unten|/2
LINE px1&+6,rl1&+unten|/2+4,px1&,rl1&+unten|/2
rechts1&=x2&-rechts|-drittel&
rechts2&=x2&-rechts|
BOX rechts1&,rl1&,rechts2&,rl2&
px1&=rechts1&+drittel&/3
px2&=rechts2&-drittel&/3
LINE px1&,rl1&+unten|/2,px2&,rl1&+unten|/2
LINE px2&-6,rl1&+unten|/2-4,px2&,rl1&+unten|/2
LINE px2&-6,rl1&+unten|/2+4,px2&,rl1&+unten|/2
BOX links2&,rl1&,rechts1&,rl2&
'
' TEXT
FOR i|=1 TO zeilen|
ty&=y1&+oben|-2+i|*9
FOR j|=1 TO n_spalten|
tx&=x1&+links|-SUCC(vk|+nk|)*8+j|*spalte|
TEXT tx&,ty&,STR$(matrix(i|,j|),SUCC(vk|+nk|),nk|)
NEXT j|
NEXT i|
l_neu&=SUCC(n_spalten|)
r_neu&=0
o_neu&=SUCC(zeilen|)
u_neu&=0
'
REPEAT
IF MOUSEK=1
IF MOUSEY>rl1& AND MOUSEY<rl2&
IF MOUSEX>links1& AND MOUSEX<links2&
IF l_neu&<=s& !Links
SCROLL -spalte|,0,SUCC(x1&+links|),SUCC(y1&+12),PRED(x2&-rechts|),PRED(y2&-unten|)
tx&=x2&-rechts|-spalte|+6
ty&=y1&+oben|+7
FOR j|=SUCC(u_neu&) TO u_neu&+zeilen|
TEXT tx&,ty&,STR$(matrix(j|,l_neu&),SUCC(vk|+nk|),nk|)
ADD ty&,9
NEXT j|
RSET spalte$=STR$(l_neu&)
TEXT x1&+links|-27+n_spalten|*spalte|,y1&+21,spalte$
LINE x2&-rechts|-spalte|,y1&+12,x2&-rechts|-spalte|,y1&+oben|
LINE x2&-rechts|-spalte|,y1&+oben|,x2&-rechts|,y1&+oben|
INC l_neu&
INC r_neu&
ENDIF
ELSE IF MOUSEX>rechts1& AND MOUSEX<rechts2&
IF r_neu& !Rechts
SCROLL spalte|,0,SUCC(x1&+links|),SUCC(y1&+12),PRED(x2&-rechts|),PRED(y2&-unten|)
tx&=x1&+links|+6
ty&=y1&+oben|+7
FOR j|=SUCC(u_neu&) TO u_neu&+zeilen|
TEXT tx&,ty&,STR$(matrix(j|,r_neu&),SUCC(vk|+nk|),nk|)
ADD ty&,9
NEXT j|
RSET spalte$=STR$(r_neu&)
TEXT x1&+links|-27+spalte|,y1&+21,spalte$
LINE x1&+links|+spalte|,y1&+12,x1&+links|+spalte|,y1&+oben|
LINE x1&+links|,y1&+oben|,x1&+links|+spalte|,y1&+oben|
DEC r_neu&
DEC l_neu&
ENDIF
ENDIF
ENDIF
'
IF MOUSEX>ou1& AND MOUSEX<ou2&
IF MOUSEY>oben1& AND MOUSEY<oben2&
IF o_neu&<=z& !Hoch
SCROLL 0,-9,SUCC(x1&),SUCC(y1&+oben|),PRED(x2&-rechts|),PRED(y2&-unten|)
ty&=y2&-unten|-2
tx&=x1&+links|-SUCC(vk|+nk|)*8+spalte|
FOR i|=SUCC(r_neu&) TO r_neu&+n_spalten|
TEXT tx&,ty&,STR$(matrix(o_neu&,i|),SUCC(vk|+nk|),nk|)
ADD tx&,spalte|
NEXT i|
RSET spalte$=STR$(o_neu&)
TEXT x1&+2,y1&+oben|-2+zeilen|*9,spalte$
LINE x1&+links|,y2&-unten|-12,x1&+links|,y2&-unten|
INC o_neu&
INC u_neu&
ENDIF
ELSE IF MOUSEY>unten1& AND MOUSEY<unten2&
IF u_neu&
SCROLL 0,9,SUCC(x1&),SUCC(y1&+oben|),PRED(x2&-rechts|),PRED(y2&-unten|)
ty&=y1&+oben|+9-2
tx&=x1&+links|-SUCC(vk|+nk|)*8+spalte|
FOR i|=SUCC(r_neu&) TO r_neu&+n_spalten|
TEXT tx&,ty&,STR$(matrix(u_neu&,i|),SUCC(vk|+nk|),nk|)
ADD tx&,spalte|
NEXT i|
RSET spalte$=STR$(u_neu&)
TEXT x1&+2,y1&+oben|+7,spalte$
LINE x1&+links|,y1&+oben|,x1&+links|,y1&+oben|+12
DEC u_neu&
DEC o_neu&
ENDIF
ENDIF
ENDIF
ENDIF
'
UNTIL MOUSEX>x1& AND MOUSEX<x1&+links| AND MOUSEY>y1& AND MOUSEY<y1&+oben| AND MOUSEK=1
PUT x1&,y1&,hintergrund$
RETURN
> PROCEDURE roll(von&,bis&,zeilen&,breite&,titel$,VAR roll$)
'
COLOR 1
roll_menge&=SUCC(bis&-von&)
text_z&=8
pixel&=zeilen&*text_z&
anteil&=MIN(1,(zeilen&/roll_menge&))*pixel&-2
scroll_zeilen&=roll_menge&-zeilen&
scroll_pixel&=pixel&-2-anteil&
scroll_zeile=scroll_pixel&/scroll_zeilen&
'
ADD breite&,16
x_l_ausschnitt&=320-breite&/2
x_r_ausschnitt&=x_l_ausschnitt&+breite&
x_l_roll&=x_r_ausschnitt&
x_r_roll&=x_l_roll&+16
y_oben&=110-(pixel&+2)/2+12
y_unten&=y_oben&+pixel&+2
text_x&=x_l_ausschnitt&+3
text_y&=y_oben&+text_z&
'
GET x_l_ausschnitt&,y_oben&-12,x_r_ausschnitt&+16,y_unten&,hintergrund$
COLOR 0
PBOX x_l_ausschnitt&,y_oben&-12,x_r_ausschnitt&+16,y_unten&
COLOR 1
'
BOX x_l_ausschnitt&,y_oben&-12,x_r_ausschnitt&+16,y_oben&
TEXT x_l_ausschnitt&+breite&/2-LEN(titel$)*4,y_oben&-3,titel$
BOX x_l_ausschnitt&,y_oben&,x_r_ausschnitt&,y_unten&
BOX x_l_roll&,y_oben&,x_r_roll&,y_unten&
'
sprite$=""
FOR i|=0 TO anteil&
sprite$=sprite$+CHR$(256)+CHR$(0)+CHR$(0)+CHR$(252)
NEXT i|
sprite_x&=x_l_roll&-11
sprite_y=y_oben&+24
scroll=sprite_y
SPRITE #2,sprite$
SPRITE #2,sprite_x&,sprite_y
'
FOR i|=von& TO MIN(bis&,von&+PRED(zeilen&))
TEXT text_x&,text_y&+(i|-von&)*text_z&,roll$(i|)
NEXT i|
zeile1&=von&
'
IF roll_menge&>zeilen&
REPEAT
IF MOUSEX>x_l_roll& AND MOUSEX<x_r_roll& AND MOUSEY+22>=sprite_y AND MOUSEY+22<=sprite_y+anteil&
position=MOUSEY+22-sprite_y
WHILE MOUSEK=1
erster&=von&+INT((sprite_y-scroll)/scroll_zeile)
sprite_y=MOUSEY+22-position
'
IF sprite_y<scroll
sprite_y=scroll
ELSE IF sprite_y>scroll+scroll_pixel&
sprite_y=scroll+scroll_pixel&
ENDIF
'
SPRITE #2,sprite_x&,sprite_y
'
IF erster&>zeile1&
'
INC zeile1&
SCROLL 0,-text_z&,SUCC(x_l_ausschnitt&),SUCC(y_oben&),PRED(x_r_ausschnitt&),PRED(y_unten&)
TEXT text_x&,text_y&+PRED(zeilen&)*text_z&,roll$(zeile1&+PRED(zeilen&))
'
ELSE IF erster&<zeile1&
'
DEC zeile1&
SCROLL 0,text_z&,SUCC(x_l_ausschnitt&),SUCC(y_oben&),PRED(x_r_ausschnitt&),PRED(y_unten&)
TEXT text_x&,text_y&,roll$(zeile1&)
'
ENDIF
'
WEND
ENDIF
UNTIL MOUSEK=2
ENDIF
SPRITE #2
PUT x_l_ausschnitt&,y_oben&-12,hintergrund$
RETURN
'
> PROCEDURE histo(von&,bis&,titel$,VAR daten())
'
@parameter
'
scale=8/((max-min)/10)
DRAW "sx0 sy";scale
DRAW "ma";a_null&+2,o_null&,""
FOR i|=von& TO bis&
DRAW "tt 0 fd";daten(i|)-min;"tt 90 fd";breite|-4;"tt 180 fd";daten(i|)-min;"tt 90 fd 4"
NEXT i|
@warte
PUT x%,y&-12,hintergrund$
RETURN
PROCEDURE kurve(von&,bis&,titel$,VAR daten())
'
@parameter
'
DEFFN kurve(wert)=o_null&-((wert-min)/(max-min))*80
ADD a_null&,breite|/2
PLOT a_null&,@kurve(daten(von&))
INC von&
ADD a_null&,breite|
FOR i&=von& TO bis&
DRAW TO a_null&,@kurve(daten(i&))
ADD a_null&,breite|
NEXT i&
@warte
PUT x%,y&-12,hintergrund$
hintergrund$=""
RETURN
> PROCEDURE kuchen(von&,bis&,VAR k_titel$(),k_daten())
summe=0
FOR i&=von& TO bis&
ADD summe,k_daten(i&)
NEXT i&
'
k_daten(von&)=360*(k_daten(von&)/summe)
FOR i&=SUCC(von&) TO bis&
k_daten(i&)=k_daten(PRED(i&))+360*(k_daten(i&)/summe)
NEXT i&
'
GET 60,30,600,200,hintergrund$
COLOR 0
PBOX 60,30,600,200
COLOR 1
'
TEXT 320-LEN(kuchen$(1))*4,40,kuchen$(1)
CIRCLE 320,115,100
DRAW "sx0 sy.442"
FOR i&=von& TO bis&
DRAW "ma 320,115 tt",k_daten(i&),"fd";100
NEXT i&
'
FOR i&=von& TO bis&
DRAW "ma 320,115 tt",k_daten(i&)/2+k_daten(PRED(i&))/2,"pu"
DRAW "fd 50"
DEFFILL 1,3,i&
FILL DRAW(0),DRAW(1)
DRAW "fd 50 pd fd 50"
IF k_daten(i&)/2+k_daten(PRED(i&))/2<=180
DRAW "tt 90 fd 20"
TEXT DRAW(0)+3,DRAW(1)+3,k_titel$(SUCC(i&))
ELSE
DRAW "tt 270 fd 20"
TEXT DRAW(0)-LEN(k_titel$(i&))*8,DRAW(1)+3,k_titel$(SUCC(i&))
ENDIF
NEXT i&
@warte
PUT 60,30,hintergrund$
hintergrund$=""
'
RETURN
'
> PROCEDURE warte
REPEAT
UNTIL MOUSEK=1 OR INKEY$=CHR$(13) OR INKEY$=CHR$(27)
RETURN
PROCEDURE parameter
'
max=0
min=100000
FOR i&=von& TO bis&
max=MAX(max,daten(i&))
min=MIN(min,daten(i&))
NEXT i&
max=SUCC(INT(max/10^PRED(INT(LOG10(max)))))*10^PRED(INT(LOG10(max)))
min=PRED(INT(min/10^PRED(INT(LOG10(min)))))*10^PRED(INT(LOG10(min)))
'
hÖhe&=24+11*8
schrittweite&=SUCC(bis&-von&)
breite|=INT(20/SUCC(INT(schrittweite&/25)))
breite&=MAX(MAX(4,LEN(STR$(max)))*8+13+schrittweite&*breite|,LEN(titel$)*8+10)
'
x%=320-breite&/2
y&=110-hÖhe&/2
'
GET x%,y&-12,x%+breite&,y&+hÖhe&,hintergrund$
COLOR 0
PBOX x%,y&-12,x%+breite&,y&+hÖhe&-12
COLOR 1
'
BOX x%,y&-12,x%+breite&,y&
TEXT (x%+breite&/2)-LEN(titel$)*4,y&-3,titel$
BOX x%,y&,x%+breite&,y&+hÖhe&-12
ordinate$=SPACE$(MAX(4,LEN(STR$(max))))
o_null&=y&+85
a_null&=x%+8+(MAX(4,LEN(STR$(max))))*8
'
LINE a_null&,y&+4,a_null&,y&+90
IF max<12
z|=4
d|=1
ELSE
z|=LEN(STR$(max))
d|=0
ENDIF
FOR i|=10 DOWNTO 0
RSET ordinate$=STR$(min+(max-min)/10*(10-i|),z|,d|)
TEXT x%+3,y&+8+i|*8,ordinate$
LINE a_null&-5,y&+5+i|*8,a_null&,y&+5+i|*8
NEXT i|
'
LINE a_null&,o_null&,a_null&+schrittweite&*breite|,o_null&
IF breite|>4
FOR i%=von& TO bis&
LINE a_null&+i%*breite|,o_null&,a_null&+i%*breite|,o_null&+3
NEXT i%
ENDIF
TEXT a_null&+(bis&/2)*breite|-LEN(STR$(bis&/2))*4,o_null&+10,STR$(INT(bis&/2))
TEXT a_null&+bis&*breite|-LEN(STR$(bis&))*8,o_null&+10,STR$(bis&)
RETURN
'
> PROCEDURE auswahl_box(menge_soll|,n|,VAR wahl$(),a!())
DIM a!(n|)
ARRAYFILL a!(),TRUE
ok!=FALSE
revers!=FALSE
markiert!=TRUE
ende!=FALSE
menge_ist|=0
DEFFILL 1
ma|=LEN(wahl$(1))
FOR i|=2 TO n|
ma|=MAX(ma|,LEN(wahl$(i|)))
NEXT i|
'
IF n|>10
l|=120
ELSE
l|=(n|*12)
ENDIF
b&=SUCC(INT(MAX((ma|*8)+30,156)/10))*10
x&=320-b&/2
y|=110-l|/2
GET x&,y|,x&+b&+1,y|+l|+37,hintergrund$
COLOR 0
PBOX x&,y|,x&+b&,y|+l|+36
COLOR 1
INC x&
INC y|
BOX x&,y|,x&+b&,y|+12
TEXT x&+b&/2-68,y|+9,"Bitte Wählen Sie!"
BOX x&,y|+12,x&+b&,y|+23
IF n|>10
FOR p&=x&+1 TO x&+b& STEP 10
LINE p&+1,y|+18,p&+5,y|+14
LINE p&+5,y|+14,p&+9,y|+18
LINE p&+2,y|+17,p&+2,y|+21
LINE p&+2,y|+21,p&+8,y|+21
LINE p&+8,y|+21,p&+8,y|+17
NEXT p&
ELSE
DEFFILL ,3
FILL x&+3,y|+15
ENDIF
BOX x&,y|+23,x&+b&,y|+23+l|
BOX x&,y|+23+l|,x&+b&,y|+34+l|
IF n|>10
FOR p&=x&+1 TO x&+b& STEP 10
LINE p&+1,y|+l|+5+23,p&+5,y|+l|+9+23
LINE p&+5,y|+l|+9+23,p&+9,y|+l|+5+23
LINE p&+2,y|+l|+1+23,p&+2,y|+l|+5+23
LINE p&+2,y|+l|+1+23,p&+8,y|+l|+1+23
LINE p&+8,y|+l|+1+23,p&+8,y|+l|+5+23
NEXT p&
ELSE
DEFFILL ,3
FILL x&+3,y|+25+l|
ENDIF
LINE x&+15,y|+23,x&+15,y|+23+l|
FOR i|=0 TO MIN(n|-1,9)
TEXT x&+3,y|+31+i|*12,i|
NEXT i|
DEC x&
DEC y|
BOX x&,y|,x&+b&,y|+l|+36
FOR l&=y|+23 TO y|+23+l| STEP 12
LINE x&,l&,x&+b&,l&
NEXT l&
FOR i|=1 TO MIN(n|,10)
TEXT x&+b&/2-(LEN(wahl$(i|))*8)/2,y|+20+i|*12,wahl$(i|)
NEXT i|
erster|=1
li&=x&+b&
l1|=y|+12
l2|=l1|+11
l3|=l2|+l|
l4|=l3|+11
REPEAT
taste$=INKEY$
IF taste$<>""
IF LEN(taste$)=1
taste&=ASC(taste$)
ELSE
taste&=ASC(RIGHT$(taste$))
ENDIF
SELECT taste&
CASE 65
IF erster|<n|-9
sel_rev(10)
sel_scr(1)
ENDIF
CASE 66
IF erster|>1
sel_rev(10)
sel_scr(0)
ENDIF
CASE 48 TO 57
SUB taste&,48
IF taste&<n|
IF a!(erster|+taste&)=TRUE
a!(erster|+taste&)=FALSE
INC menge_ist|
COLOR 1
LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
ELSE
a!(erster|+taste&)=TRUE
DEC menge_ist|
COLOR 0
LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
ENDIF
ENDIF
CASE 13
ende!=TRUE
ENDSELECT
taste$=""
ENDIF
IF MOUSEX>x& AND MOUSEX<li& AND MOUSEY>l2| AND MOUSEY<l3| AND MOUSEK<>2
' Mauszeiger im Auswahlfeld
eintrag|=MAX(0,(MOUSEY-y|-24)/12)
sel_rev(eintrag|)
IF MOUSEK=1 AND ok!=FALSE
IF a!(erster|+eintrag|)=TRUE
a!(erster|+eintrag|)=FALSE
INC menge_ist|
COLOR 1
LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
ELSE
a!(erster|+eintrag|)=TRUE
DEC menge_ist|
COLOR 3
LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
ENDIF
ENDIF
ok!=MOUSEK
ELSE
sel_rev(10)
ENDIF
IF MOUSEX>x& AND MOUSEX<li& AND MOUSEY>l1| AND MOUSEY<l2| AND MOUSEK=1 AND erster|<n|-9
' Mauszeiger im oberen Scrollfeld
sel_scr(1)
ELSE IF MOUSEX>x& AND MOUSEX<li& AND MOUSEY>l3| AND MOUSEY<l4| AND MOUSEK=1 AND erster|>1
' Mauszeiger im unteren Scrollfeld
sel_scr(0)
ENDIF
UNTIL MOUSEK=2 OR ende!=TRUE OR menge_soll|=menge_ist|
PUT x&,y|,hintergrund$
RETURN
> PROCEDURE sel_rev(nummer|)
IF revers!=TRUE AND revers|<>nummer| !Revers off
GET x&+19,y|+25+revers|*12,x&+b&-3,y|+33+revers|*12,revers$
PUT x&+19,y|+25+revers|*12,revers$,30
revers!=FALSE
ELSE IF revers!=FALSE AND nummer|<10 !Revers on
GET x&+19,y|+25+nummer|*12,x&+b&-3,y|+33+nummer|*12,revers$
PUT x&+19,y|+25+nummer|*12,revers$,30
revers!=TRUE
revers|=nummer|
ENDIF
RETURN
> PROCEDURE sel_scr(richtung|)
IF richtung|
INC erster|
ELSE
DEC erster|
ENDIF
GET x&+17,y|+25+richtung|*12,x&+b&-1,y|+10+l|+richtung|*12,teil$
PUT x&+17,y|+37-richtung|*12,teil$
DEFFILL 0
PBOX x&+18,y|+25+richtung|*108,x&+b&-1,y|+34+richtung|*108
DEFFILL 1
TEXT x&+5+b&/2-(LEN(wahl$(erster|+richtung|*9))*8)/2,y|+32+richtung|*108,wahl$(erster|+richtung|*9)
IF a!(erster|+richtung|*9)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+richtung|*108,x&+b&-7,y|+33+richtung|*108
LINE x&+b&-7,y|+33+richtung|*108,x&+b&-3,y|+25+richtung|*108
ENDIF
RETURN